package com.itheima.test;
//类型通配符: <?>
//ArrayList<?>: 表示元素类型未知的ArrayList,它的元素可以匹配任何的类型
//但是并不能把元素添加到ArrayList中了,获取出来的也是父类类型
//类型通配符上限: <? extends 类型>

//类型通配符下限: <? super 类型>


import java.util.ArrayList;

public class GenericTest04 {
    public static void main(String[] args) {
        ArrayList<?> arrayList = new ArrayList<>();
        //arrayList.add(213);
        //Object o = arrayList.get(0);
        ArrayList<Fu> list1 = new ArrayList<>();
        ArrayList<Zi> list2 = new ArrayList<>();
        ArrayList<Ye> list3 = new ArrayList<>();

        method1(list1);
        method1(list2);
        //method1(list3); 报错

        method2(list1);
        //method2(list2); 报错
        method2(list3);

    }
    //类型通配符上限: <? extends 类型>
    public static void method1(ArrayList<? extends Fu> arrayList1){};
    //类型通配符下限: <? super 类型>
    public static void method2(ArrayList<? super Fu> arrayList2){};

}

class Ye{

}
class Fu extends Ye{

}
class Zi extends Fu{

}
